// src/api/category.ts
import request from '@/utils/request';
// 导入我们将在模型层创建的类型
import type { ICategory, ICategoryPageResult, ICategoryPageQuery } from '@/types/category';

/**
 * 分类分页查询
 * @param params - 查询参数
 */
export const getCategoryPage = (params: ICategoryPageQuery) => {
  // 注意：接口文档返回的数据结构是 { code, msg, data: { records, total } }
  // 我们需要明确指定泛型，以便 TypeScript 知道 data 内部的结构
  return request<ICategoryPageResult>({
    url: '/category/page',
    method: 'get',
    params
  });
};

/**
 * 新增分类
 * @param data - 分类数据
 */
export const addCategory = (data: { name: string; sort: number; type: number }) => {
  return request({
    url: '/category',
    method: 'post',
    data // Body 参数使用 data 属性
  });
};

/**
 * 修改分类
 * @param data - 分类数据
 */
export const editCategory = (data: ICategory) => {
  return request({
    url: '/category',
    method: 'put',
    data // Body 参数使用 data 属性
  });
};

/**
 * 根据id删除分类
 * @param id - 分类id
 */
export const deleteCategory = (id: number) => {
  return request({
    url: '/category',
    method: 'delete',
    params: { id } // Query 参数使用 params 属性
  });
};

/**
 * 启用、禁用分类
 * @param params - 包含 status 和 id
 */
export const updateCategoryStatus = (params: { status: 0 | 1; id: number }) => {
  // 路径参数 {status} 会直接拼接到 URL 中
  return request({
    url: `/category/status/${params.status}`,
    method: 'post',
    params: { id: params.id } // Query 参数使用 params 属性
  });
};

/**
 * 根据类型查询分类
 * @param params - 包含 type
 */
export const getCategoryList = (params: { type: number }) => {
  // 返回的数据是 ICategory 数组
  return request<ICategory[]>({
    url: '/category/list',
    method: 'get',
    params
  });
};
